package com.bosicloud.cmb.ibp.api.manager.dao;

import com.bosicloud.cmb.ibp.api.manager.commom.model.IbpApi;
import com.bosicloud.cmb.ibp.api.manager.commom.vo.IbpApiVO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * @author Jack Peng / ziliang.peng@bosicloud.com
 */
public interface IbpApiMapper extends Mapper<IbpApi> {

    /**
     * 分页
     *
     * @param currIndex  页码索引
     * @param pageSize   每页显示条数
     * @param categoryId 分类ID
     * @return
     */
    List<IbpApi> selectByPage(@Param("currIndex") Integer currIndex, @Param("pageSize") Integer pageSize,
                              @Param("categoryId") Integer categoryId);

    int selectByPageCount(@Param("categoryId") Integer categoryId);


    /**
     * 搜索API
     *
     * @param pageIndex 页码索引
     * @return
     */
    List<IbpApi> searchByPage(@Param("pageIndex") Integer pageIndex);


    /**
     * 搜索API市场列表
     *
     * @param categoryId 分类Id
     * @param searchText 搜索关键字(apiName)
     * @return int
     */
    int searchApiCount(@Param("categoryId") Integer categoryId,
                       @Param("searchText") String searchText);


    /**
     * 搜索API市场列表
     *
     * @param currIndex  当前页
     * @param pageSize   每页数据
     * @param categoryId 分类Id
     * @param searchText 搜索关键字(apiName)
     * @return List<IbpApiVO>
     */
    List<IbpApiVO> searchApi(@Param("currIndex") Integer currIndex, @Param("pageSize") Integer pageSize,
                             @Param("categoryId") Integer categoryId, @Param("searchText") String searchText);

    /**
     * 搜索API详情
     *
     * @param apiId apiId
     * @return IbpApiVO
     */
    IbpApiVO searchApiDetailById(@Param("apiId") Integer apiId);

    /**
     * 添加Api
     *
     * @param ibpApi
     * @return
     */
    Integer insertIbpApi(IbpApi ibpApi);

    /**
     * 更新Api
     *
     * @param ibpApi
     * @return
     */
    Integer updateIbpApi(IbpApi ibpApi);


    /**
     * API列表
     *
     * @return int
     */
    int searchApiDeveloperCount(@Param("userId") Integer userId);

    /**
     * API开发者列表
     *
     * @param currIndex 当前页
     * @param pageSize  每页数据
     * @return List<IbpApiVO>
     */
    List<IbpApiVO> searchApiDeveloperList(@Param("currIndex") Integer currIndex,
                                          @Param("pageSize") Integer pageSize,
                                          @Param("userId") Integer userId);

    /**
     * 根据apiId删除IbpApi
     *
     * @param apiId
     * @return Integer
     */
    Integer deleteIbpApiByApiId(Integer apiId);
}
